home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / cw / ezcode / ezcode.bas
BASIC Source File  |  1986-03-15  |  8KB  |  73 lines

  1. 1 KEY OFF:COLOR 14,0,0:SCREEN 0,0,0,0:WIDTH 80:KEY OFF:COLOR 14,0,0:LOCATE 1,1,1:DIM A$(256), WRONG(256):DEFINT C,X:EXAM$="NO":GOSUB 39:GOSUB 8:GOSUB 19:X = RND(-VAL(RIGHT$(TIME$,2)))
  2. 2 IF EXAM$="YES" THEN GOSUB 59:H$=CHR$(27):GOTO 6 ELSE GOSUB 12
  3. 3 GOSUB 9
  4. 4 H$=INKEY$:IF H$="" THEN GOTO 4 ELSE IF H$>CHR$(96) THEN H$=CHR$(ASC(H$)-32)
  5. 5 IF H$=" " THEN GOTO 3
  6. 6 IF H$=CHR$(27) THEN GOSUB 14
  7. 7 CHRCOUNT=CHRCOUNT+1:IF H$=CHR$(13) THEN PRINT CHR$(C);" ";:GOTO 3 ELSE IF ASC(H$)=C THEN PRINT CHR$(C);" ";:CORRECTCOUNT=CORRECTCOUNT+1:GOTO 2 ELSE SOUND 200,10:SOUND Z,10:WRONGCOUNT=WRONGCOUNT+1:WRONG(C)=WRONG(C)+1:GOTO 3
  8. 8 FOR I=ASC("A") TO ASC("Z"):READ A$(I):NEXT I:READ I:FOR J=1 TO I:READ C$,A$(ASC(C$)):NEXT J:RETURN
  9. 9 C$=A$(C):IF(C<>32)=0 THEN 11 ELSE IF LEN(C$)=0 THEN RETURN ELSE FOR I = 1 TO LEN(C$):IF MID$(C$,I,1)<>"a" THEN SOUND F, IS ELSE SOUND F, AS1
  10. 10 SOUND Z,IS:NEXT I :SOUND Z,AS1:RETURN:GOTO 12
  11. 11 SOUND Z,AS1*3:RETURN
  12. 12 X=RND(1)*LEN(CHRS$)+.5:IF X>LEN(CHRS$) OR X<1 THEN GOTO 12 ELSE C=ASC(MID$(CHRS$,X,1)):RETURN:DATA "ia","aiii","aiai","aii","i","iiai","aai","iiii","ii":DATA "iaaa","aia","iaii","aa","ai","aaa","iaai","aaia","iai"
  13. 13 DATA "iii","a","iia","iiia","iaa","aiia","aiaa","aaii":DATA 15:DATA 0,"aaaaa",1,"iaaaaa",2,"iiaaa",3,"iiiaa",4,"iiiia",5,"iiiii":DATA 6,aiiii,7,aaiii,8,aaaii,9,aaaai,"?",iiaaii,",",aaiiaa:DATA ".",iaiaia,"/",aiiai,"-",aiiia
  14. 14 CLS:IF(EXAM$="NO")=0 THEN 17 ELSE PRINT "Total Characters - ";CHRCOUNT:PRINT "Right            - ";CORRECTCOUNT:PRINT "Wrong            - ";WRONGCOUNT
  15. 15 IF CHRCOUNT<>0 THEN PRINT USING "&###";"Percentage Right - ";(CORRECTCOUNT/CHRCOUNT)*100
  16. 16 GOSUB 33:CHRCOUNT=CHRCOUNT-1
  17. 17 PRINT:PRINT:PRINT "Would you like to change parameters ";:INPUT A$:A$=LEFT$(A$,1):IF A$="Y" OR A$="y" THEN GOSUB 19 ELSE IF EXAM$="NO" THEN GOSUB 32
  18. 18 C=32:H$=CHR$(C):CORRECTCOUNT=-1:CHRCOUNT=-1:WRONGCOUNT=0:FOR I=1 TO 256:WRONG(I)=0:NEXT I:RETURN
  19. 19 CLS:LOCATE 3,25: PRINT "Code Practice Parameter Setup":LOCATE 7,5:  PRINT "Speed (Words Per Minute)    - ":LOCATE 9,5:  PRINT "Characters to Practice      - ":LOCATE 11,5: PRINT "Sample Exam                 - "
  20. 20 IF WPM=0 THEN WPM=7.5
  21. 21 LOCATE 7,35: PRINT WPM:IF CHRS$="" THEN CHRS$="EISH5-"
  22. 22 LOCATE 9,36: PRINT CHRS$:LOCATE 11,36:PRINT EXAM$:LOCATE 15,5:PRINT "Type the new value or press enter to accept the value shown":GOSUB 38
  23. 23 LOCATE 7,36:LINE INPUT; ANS$:IF ANS$="" THEN ANS=WPM ELSE ANS=VAL (ANS$)
  24. 24 IF ANS>20 OR ANS<1 THEN LOCATE 8,10:PRINT "Speed must be between 1 and 20 WPM":LOCATE 7,35:ANS=WPM:PRINT SPC(20);:LOCATE 7,35:PRINT ANS;:GOTO 23 ELSE LOCATE 8,10:PRINT SPC(60):LOCATE 7,35:PRINT SPC(20);:LOCATE 7,35:PRINT ANS;
  25. 25 WPM=ANS:SM=15/WPM
  26. 26 LOCATE 9,36:LINE INPUT;ANS$:FOR I=1 TO LEN(ANS$):ANS=ASC(MID$(ANS$,I,1)):IF ANS >96 THEN ANS=ANS-32:MID$(ANS$,I,1)=CHR$(ANS)
  27. 27 IF A$(ANS)="" THEN LOCATE 10,10:PRINT "Character ";MID$(ANS$,I,1);"  Is not acceptable - Please retype line":LOCATE 9,36:PRINT SPC(44):LOCATE 9,36:PRINT CHRS$:GOSUB 36:GOTO 26 ELSE NEXT I:IF ANS$<>"" THEN CHRS$=ANS$
  28. 28 LOCATE 9,36:PRINT SPC(44):LOCATE 9,36:PRINT CHRS$:LOCATE 10,10:PRINT SPC(70):GOSUB 45:IS=1*SM:Z=32767:AS1=3*SM:LOCATE 14,10:PRINT SPC(70):F=600
  29. 29 LOCATE 24,1:PRINT "Press ENTER to begin or ESC to make more changes";SPC(20)
  30. 30 ANS$=INKEY$:IF ANS$="" THEN LOCATE 24,1:PRINT SPC(70);:GOTO 29 ELSE IF(ANS$=CHR$(13))=0 THEN 31 ELSE IF EXAM$="YES" THEN LOCATE 1,1:RETURN ELSE GOTO 32
  31. 31 IF ANS$=CHR$(27) THEN GOTO 19 ELSE GOTO 30
  32. 32 CLS:LOCATE 22,1:PRINT "Press the SPACE BAR to re-sound the character.":LOCATE 23,1:PRINT "Press the ENTER key to see the character":LOCATE 24,1:PRINT "Press the ESC key to see results or change parameters.":LOCATE 1,1:RETURN
  33. 33 LOCATE 7,1:PRINT "Characters and number of misses":NCNT=0:FOR I=1 TO 256:IF A$(I)<>"" AND WRONG (I)<>0 THEN NCNT=1:PRINT USING"[ ! - ## ]";CHR$(I),WRONG(I);
  34. 34 NEXT I:IF NCNT=0 THEN PRINT " - None - "
  35. 35 RETURN
  36. 36 LOCATE 24,1:PRINT "Valid characters are: ";:FOR I=1 TO 256:IF A$(I)<>"" THEN PRINT CHR$(I);
  37. 37 NEXT I:RETURN
  38. 38 LOCATE 21,1:PRINT "    It is suggested that you study the code in the following groups:":PRINT:PRINT "        EISH5-  TMO0,/  ARLWJ1P  UF2V34?.  NDB689X  GQZ7KCY":RETURN
  39. 39 CLS:PRINT:PRINT "                                E Z C O D E  ":PRINT:PRINT "                                Version 2.0":PRINT:PRINT "                     Copyright - Jerry W. Segers - 1984":PRINT:PRINT
  40. 40 PRINT "This  program is designed to teach International Morse Code for the purpose  of":FALSE=0:TRUE=NOT FALSE:PRINT "passing the code portion of the amateur radio license examination.  If you find"
  41. 41 PRINT "the program to be of value, please help the author produce additional  programs":PRINT "of this type by sending a donation ($10.00 suggested) to:":PRINT:PRINT "                           Jerry W. Segers"
  42. 42 PRINT "                           Route 2, Roper Road":PRINT "                           Canton, Georgia  30114":PRINT:PRINT:PRINT "You are asked to make copies of this program and pass them along to anyone that"
  43. 43 PRINT "might like to use it provided this banner is not modified or removed.   If  you":PRINT "would like to be notified of updates or other programs please include your name":PRINT "and address with your donation."
  44. 44 LOCATE 24,1:PRINT "Press any key to begin.";:WHILE INKEY$="":WEND:RETURN
  45. 45 LOCATE 11,36:LINE INPUT ANS$:IF ANS$="" THEN ANS=ASC(EXAM$) ELSE ANS=ASC(ANS$)
  46. 46 IF ANS>96 THEN ANS=ANS-32
  47. 47 IF ANS<> 89 AND ANS <> 78 THEN LOCATE 12,10:PRINT "Please answer YES or NO";:LOCATE 11,36:PRINT SPC(40);:LOCATE 11,36:ANS$=EXAM$:PRINT ANS$;:GOTO 45 ELSE IF ANS=89 THEN EXAM$="YES" ELSE EXAM$="NO"
  48. 48 LOCATE 11,36:PRINT SPC(30):LOCATE 11,36:PRINT EXAM$:LOCATE 12,10:PRINT SPC(60);:IF EXAM$="NO" THEN RETURN ELSE CLOSE #1:GOSUB 57:LOCATE 13,5:PRINT "Exam file name              - "
  49. 49 LOCATE 13,36:PRINT FILNAM$:LOCATE 13,36:LINE INPUT; ANS$:IF(ANS$="")=0 THEN 51 ELSE IF FILNAM$="" THEN EXAM$="NO":GOTO 19 ELSE ANS$=FILNAM$
  50. 50 GOTO 52
  51. 51 FILNAM$=ANS$
  52. 52 GOSUB 53:IF PRESENT THEN OPEN FILNAM$ FOR INPUT AS #1:RETURN ELSE FILNAM$="":LOCATE 14,10:PRINT "File not present - try again or press return to cancel":GOTO 49
  53. 53 ON ERROR GOTO 54:NAME FILNAM$ AS FILNAM$
  54. 54 M=ERR:RESUME 55
  55. 55 ON ERROR GOTO 0:IF M<>58 THEN PRESENT=FALSE ELSE PRESENT=TRUE
  56. 56 RETURN
  57. 57 LOCATE 15,1:PRINT SPC(60):LOCATE 15,1:PRINT "Enter  the name of the file containing the text to be used for the  test.  The ":LOCATE 16,1:PRINT "file  can  be prepared  with  your favorite text editor.  It's name  should  be"
  58. 58 LOCATE 17,1:PRINT "entered as - X:NAME.EXT - where: X is the drive specifier, NAME is the filename":LOCATE 18,1:PRINT "and EXT is the extension":RETURN
  59. 59 CLOSE #2:CLS:PRINT "You may type the letters as you hear them.   If you miss a letter type a  blank and continue with the next one.  Press any key to begin.":OPEN "qqqqjwsq" FOR OUTPUT AS #2:WHILE INKEY$="":WEND:CLS:LOCATE 24,1
  60. 60 PRINT " Press ESC to terminate the test";:LOCATE 1,1
  61. 61 IF EOF(1) THEN GOTO 64 ELSE LINE INPUT #1,ANS$:FOR L=1 TO LEN(ANS$):H$=INKEY$:IF(H$<>"")=0 THEN 62 ELSE IF H$=CHR$(27) THEN GOTO 64 ELSE GOSUB 72
  62. 62 C=ASC(MID$(ANS$,L,1)):IF C>96 THEN C=C-32
  63. 63 GOSUB 9:NEXT L:GOTO 61
  64. 64 ROW=CSRLIN:COL=POS(0)
  65. 65 LOCATE 24,1:PRINT SPC(70);:LOCATE 24,1:PRINT "Press ESC to begin grading.";:LOCATE ROW,COL
  66. 66 H$=INKEY$:IF H$="" THEN GOTO 65 ELSE IF H$=CHR$(27) THEN GOTO 67 ELSE GOSUB 72:GOTO 66
  67. 67 CLS:PRINT "Text as presented:":PRINT:CLOSE #1:CLOSE #2:OPEN FILNAM$ FOR INPUT AS #1:OPEN "qqqqjwsq" FOR INPUT AS #2
  68. 68 IF EOF(1) THEN GOTO 69 ELSE LINE INPUT #1,ANS$:PRINT ANS$:GOTO 68
  69. 69 PRINT:PRINT "Text as you entered it.":PRINT:CLOSE #1:OPEN FILNAM$ FOR INPUT AS #1
  70. 70 IF EOF(2) THEN GOTO 71 ELSE LINE INPUT #2,ANS$:PRINT ANS$:GOTO 70
  71. 71 LOCATE 24,1:PRINT SPC(79);:LOCATE 24,1:PRINT "Press the ENTER key to continue.";:CLOSE #2:KILL "qqqqjwsq":INPUT; ANS$:RETURN
  72. 72 PRINT #2,H$;:PRINT H$;:RETURN
  73.